package com.maxjay.component.metadata.core.interceptor;

import com.maxjay.component.metadata.model.Entity;
import com.maxjay.component.metadata.model.Record;

/**
 * Entity实体对象拦截器
 * 
 * @author zhaixm
 *
 */
public interface EntityInterceptor {
	
	/**
	 * 记录新增之前
	 * 
	 * @param entity
	 * @param record
	 */
	void beforeCreate(Entity entity, Record record);

	/**
	 * 记录新增之后
	 * 
	 * @param entity
	 * @param record
	 */
	void afterCreate(Entity entity, Record record);

	/**
	 * 记录更新之前
	 * 
	 * @param entity
	 * @param record
	 */
	void beforeUpdate(Entity entity, Record record);

	/**
	 * 记录更新之后
	 * 
	 * @param entity
	 * @param record
	 */
	void afterUpdate(Entity entity, Record record);

	/**
	 * 记录删除之前
	 * 
	 * @param entity
	 * @param keyFieldValues
	 */
	void beforeDelete(Entity entity, String keyFieldValue);

	/**
	 * 记录删除之后
	 * 
	 * @param entity
	 * @param keyFieldValues
	 */
	void afterDelete(Entity entity, String keyFieldValue);
	
}
